package 二叉树.BinaryTreeDepthTravel;

import 二叉树.BinaryTreeTemplate;

import java.util.ArrayList;
import java.util.List;

/**
 * 此文件专门用于二叉树的深度遍历-递归法
 */
public class BinaryTreeDepthTravelForRecurrence {
    // 递归方法 是要传入本层次的左右作为下一个层次的起点的 参数的
    List<Integer> result = new ArrayList<>(); // 结果集

    /**-----------------------中左右 递归--------------------------**/
    public void front(BinaryTreeTemplate startAndNextRound){
        if(startAndNextRound == null) {
            return;
        }
        this.result.add(startAndNextRound.value);
        front(startAndNextRound.left);
        front(startAndNextRound.right);
    }
    /**-----------------------左中右 递归--------------------------**/
    public void middle(BinaryTreeTemplate startAndNextRound){
        if (startAndNextRound == null) {return;}
        middle(startAndNextRound.left);
        this.result.add(startAndNextRound.value);
        middle(startAndNextRound.right);
    }
    /**-----------------------左右中 递归--------------------------**/
    public void behind(BinaryTreeTemplate startAndNextRound){
        if (startAndNextRound == null) {return;}
        behind(startAndNextRound.left);
        behind(startAndNextRound.right);
        this.result.add(startAndNextRound.value);
    }
}
